package com.demon.auto.model.entity;

import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.demon.auto.model.dto.SignClientDto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 签到客户端表
 *
 * @version 1.0
 * @author huangrz
 * @date 2025/02/13 14:14
 */
@Slf4j
@Accessors(chain = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("t_sign_client")
public class SignClientEntity implements Serializable {

    /**
     * 主键
     */
    @TableId
    private Long id;
    /**
     * 客户端名称
     */
    private String clientName;
    /**
     * 配置信息（JSON格式）
     */
    private String configJson;
    /**
     * 是否启用
     */
    private Boolean openFlag;
    /**
     * 最后在线时间（心跳）
     */
    private LocalDateTime lastOnlineTime;
    /**
     * 自动签到时间
     */
    private LocalDateTime autoSignTime;
    /**
     * 有效标识
     */
    @TableLogic
    private Boolean validFlag;
    /**
     * 修改时间
     */
    @TableField(fill= FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * 创建时间
     */
    @TableField(fill= FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * 修改人
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateCode;
    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    private Long createCode;


    public SignClientEntity(SignClientDto dto) {
        if (dto == null) {
            return;
        }
        BeanUtils.copyProperties(dto, this);
        if (dto.getConfig() != null) {
            try {
                this.configJson = JSON.toJSONString(dto.getConfig());
            } catch (Exception e) {
                log.error("客户端配置转换JSON字符串异常", e);
            }
        }
    }

}
